#ifndef __RTP_PACK__
#define __RTP_PACK__

#pragma pack(1)//设定为1字节对齐

#include <stdio.h>
#include <memory.h>
#include <stdlib.h>
#include "librtsp.h"

typedef struct {
    unsigned char magic;
    unsigned char channel;
    unsigned short length;
} RtspInterleavedFrameHeader;

typedef struct {
    unsigned char cc:4;        /* CSRC count */
    unsigned char x:1;         /* header extension flag */
    unsigned char p:1;         /* padding flag */
    unsigned char version:2;   /* protocol version */
    unsigned char pt:7;        /* payload type */
    unsigned char m:1;         /* marker bit */
    unsigned short seq;      /* sequence number */
    unsigned int ts;               /* timestamp */
    unsigned int ssrc;             /* synchronization source */
} CRtpHeader;
typedef struct {
    unsigned char FUType:5;
    unsigned char NRI:2;
    unsigned char F:1;
}FuIdentifier;
typedef struct {
    unsigned char NALUnitType:5;
    unsigned char Forbid:1;
    unsigned char End:1;
    unsigned char Start:1;
}FuHeader;
typedef struct {
    FuIdentifier Identifier;
    FuHeader Header;
} CH264NalUnit;

#pragma pack(4)//设定为4字节对齐
#define  MAX_RTP_LEN 1001

typedef  struct{
    unsigned char *data;
    int length;
}Vector;

int Pack264(unsigned char *frame,int, Vector **outbuf);   
// for very low memory device like hi3518
int Pack264AndSend(unsigned char *frame,int size,RtspClient * p);

#endif
